/**
 * API相关常量定义
 */

// 辅导项目类型
export const TUTORING_ITEM = {
  THESIS: 1,      // 论文
  HOMEWORK: 2,    // 作业
  POSTGRADUATE: 3, // 保研
  GRADUATE_EXAM: 4, // 考研
  OTHER: 5        // 其他
}

// 辅导项目类型文本映射
export const TUTORING_ITEM_TEXT = {
  [TUTORING_ITEM.THESIS]: '论文',
  [TUTORING_ITEM.HOMEWORK]: '作业',
  [TUTORING_ITEM.POSTGRADUATE]: '保研',
  [TUTORING_ITEM.GRADUATE_EXAM]: '考研',
  [TUTORING_ITEM.OTHER]: '其他'
}

// 学习阶段
export const STUDY_STAGE = {
  UNDERGRADUATE: 1, // 本科
  MASTER: 2,       // 硕士
  DOCTOR: 3        // 博士
}

// 学习阶段文本映射
export const STUDY_STAGE_TEXT = {
  [STUDY_STAGE.UNDERGRADUATE]: '本科',
  [STUDY_STAGE.MASTER]: '硕士',
  [STUDY_STAGE.DOCTOR]: '博士'
}

// 学习场所
export const STUDY_PLACE = {
  DOMESTIC: 1,  // 国内
  ABROAD: 2     // 国外
}

// 学习场所文本映射
export const STUDY_PLACE_TEXT = {
  [STUDY_PLACE.DOMESTIC]: '国内',
  [STUDY_PLACE.ABROAD]: '国外'
}

// 老师学历
export const TEACHER_LEVEL = {
  UNDERGRADUATE: 1, // 本科
  MASTER: 2,       // 硕士
  DOCTOR: 3,       // 博士
  PROFESSOR: 4     // 高校老师
}

// 老师学历文本映射
export const TEACHER_LEVEL_TEXT = {
  [TEACHER_LEVEL.UNDERGRADUATE]: '本科',
  [TEACHER_LEVEL.MASTER]: '硕士',
  [TEACHER_LEVEL.DOCTOR]: '博士',
  [TEACHER_LEVEL.PROFESSOR]: '高校老师'
}

// 老师是否留学
export const TEACHER_ABROAD = {
  YES: 1,        // 是
  NO_REQUIREMENT: 2 // 不要求
}

// 老师是否留学文本映射
export const TEACHER_ABROAD_TEXT = {
  [TEACHER_ABROAD.YES]: '是',
  [TEACHER_ABROAD.NO_REQUIREMENT]: '不要求'
}

// 擅长辅导项目
export const GOOD_AT_ITEMS = {
  DOMESTIC_THESIS: 1,    // 国内论文
  PROFESSIONAL_COURSE: 2, // 专业课
  POSTGRADUATE: 3,       // 保研
  GRADUATE_EXAM: 4,      // 考研
  OVERSEAS_THESIS: 5,    // 留学论文
  OVERSEAS_APPLICATION: 6, // 留学申请
  PHD_APPLICATION: 7,    // 申博
  COMPETITION: 8         // 竞赛
}

// 擅长辅导项目文本映射
export const GOOD_AT_ITEMS_TEXT = {
  [GOOD_AT_ITEMS.DOMESTIC_THESIS]: '国内论文',
  [GOOD_AT_ITEMS.PROFESSIONAL_COURSE]: '专业课',
  [GOOD_AT_ITEMS.POSTGRADUATE]: '保研',
  [GOOD_AT_ITEMS.GRADUATE_EXAM]: '考研',
  [GOOD_AT_ITEMS.OVERSEAS_THESIS]: '留学论文',
  [GOOD_AT_ITEMS.OVERSEAS_APPLICATION]: '留学申请',
  [GOOD_AT_ITEMS.PHD_APPLICATION]: '申博',
  [GOOD_AT_ITEMS.COMPETITION]: '竞赛'
}

// 审核状态
export const AUDIT_STATUS = {
  AUDITING: 1,    // 审核中
  SUCCESS: 2,     // 审核成功
  FAILED: 3       // 审核失败
}

// 审核状态文本映射
export const AUDIT_STATUS_TEXT = {
  [AUDIT_STATUS.AUDITING]: '审核中',
  [AUDIT_STATUS.SUCCESS]: '审核成功',
  [AUDIT_STATUS.FAILED]: '审核失败'
}

// 图片类型
export const PICTURE_TYPE = {
  ID_CARD_FRONT: 1,      // 身份证正面
  ID_CARD_BACK: 2,       // 身份证背面
  EDUCATION_CERT: 3,     // 学历证明
  OTHER: 4               // 其他
}

// 图片类型文本映射
export const PICTURE_TYPE_TEXT = {
  [PICTURE_TYPE.ID_CARD_FRONT]: '身份证正面',
  [PICTURE_TYPE.ID_CARD_BACK]: '身份证背面',
  [PICTURE_TYPE.EDUCATION_CERT]: '学历证明',
  [PICTURE_TYPE.OTHER]: '其他'
}

// 订单状态（学生端）
export const STUDENT_ORDER_STATUS = {
  WAITING_ACCEPT: 0,    // 待接单
  IN_DELIVERY: 1,       // 交付中
  WAITING_EVALUATE: 2,  // 待评价
  COMPLETED: 3          // 已完成
}

// 订单状态文本映射（学生端）
export const STUDENT_ORDER_STATUS_TEXT = {
  [STUDENT_ORDER_STATUS.WAITING_ACCEPT]: '待接单',
  [STUDENT_ORDER_STATUS.IN_DELIVERY]: '交付中',
  [STUDENT_ORDER_STATUS.WAITING_EVALUATE]: '待评价',
  [STUDENT_ORDER_STATUS.COMPLETED]: '已完成'
}

// 投递状态（老师端）
export const TEACHER_DELIVERY_STATUS = {
  DELIVERING: 1,  // 投递中
  REJECTED: 2,    // 已拒绝
  IN_DELIVERY: 3, // 交付中
  COMPLETED: 4    // 已完成
}

// 投递状态文本映射（老师端）
export const TEACHER_DELIVERY_STATUS_TEXT = {
  [TEACHER_DELIVERY_STATUS.DELIVERING]: '投递中',
  [TEACHER_DELIVERY_STATUS.REJECTED]: '已拒绝',
  [TEACHER_DELIVERY_STATUS.IN_DELIVERY]: '交付中',
  [TEACHER_DELIVERY_STATUS.COMPLETED]: '已完成'
}

// API响应状态码
export const API_CODE = {
  SUCCESS: '1000',      // 成功
  PARAM_ERROR: '400',   // 参数缺失
  NOT_FOUND: '404',     // 请求路径非法
  METHOD_ERROR: '405',  // 请求方式不支持
  SERVER_ERROR: '500',  // 系统异常
  SYSTEM_ERROR: '5000'  // 系统异常
}

// 分页默认参数
export const PAGE_CONFIG = {
  DEFAULT_CURRENT: 1,   // 默认当前页
  DEFAULT_SIZE: 10,     // 默认每页数量
  MAX_SIZE: 100        // 最大每页数量
}

// 工具函数：根据值获取对应的文本
export const getTextByValue = (valueMap, value) => {
  return valueMap[value] || '未知'
}

// 工具函数：获取所有选项（用于下拉框等）
export const getOptions = (valueMap) => {
  return Object.keys(valueMap).map(key => ({
    value: parseInt(key),
    text: valueMap[key]
  }))
}
